package com.developer.persistence.modulo.equipos;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.developer.core.utils.SimpleLogger;
import com.developer.logic.modulo.equipos.dto.Equipo;
import com.developer.logic.modulo.equipos.dto.EquipoResultado;
import com.developer.logic.modulo.equipos.dto.Jugador;
import com.developer.logic.modulo.partidos.dto.Partido;
import com.developer.mybatis.DBManager;
import com.developer.persistence.modulo.equipos.mapper.dao.EquipoDao;
import com.developer.persistence.modulo.partidos.mapper.dao.PartidoDao;

public class EquipoControllerDB {
	
	private static EquipoControllerDB instance;
	
	public static EquipoControllerDB getInstance() {
		if (instance == null) {
			instance = new EquipoControllerDB();
		}
		
	
		return instance;
	}
	
	public List<Equipo> getEquipos(){
		SqlSession session = DBManager.openSession();

		try {

			EquipoDao EquipoMapper = session.getMapper(EquipoDao.class);
			List<Equipo> list = EquipoMapper.getEquipos();

			return list;	
		}catch (Exception e) {
			SimpleLogger.error("Error consultando getEquipos", e);
			
			return null;
			
		} finally {
			session.close();
		}
		
		
	} 
	
	public List<Equipo> getEquiposActivos(){
		SqlSession session = DBManager.openSession();

		try {

			EquipoDao EquipoMapper = session.getMapper(EquipoDao.class);
			List<Equipo> list = EquipoMapper.getEquiposActivos();

			return list;	
		}catch (Exception e) {
			SimpleLogger.error("Error consultando getEquiposActivos", e);
			
			return null;
			
		} finally {
			session.close();
		}
		
		
	} 
	
	public Equipo getEquipo(Long equipo){
		SqlSession session = DBManager.openSession();

		try {

			EquipoDao EquipoMapper = session.getMapper(EquipoDao.class);
			Equipo equipoConsultado= EquipoMapper.getEquipo(equipo);

			return equipoConsultado;	
		}catch (Exception e) {
			SimpleLogger.error("Error consultando getEquipo", e);
			
			return null;
			
		} finally {
			session.close();
		}
		
		
	} 
	
	public List<Jugador> getJugadoresPorEquipo(Equipo equipo){
		SqlSession session = DBManager.openSession();

		try {

			EquipoDao EquipoMapper = session.getMapper(EquipoDao.class);
			List<Jugador> jugadores= EquipoMapper.getJugadoresPorEquipo(equipo);

			return jugadores;	
		}catch (Exception e) {
			SimpleLogger.error("Error consultando getJugadoresPorEquipo", e);
			
			return null;
			
		} finally {
			session.close();
		}
		
		
	} 
	
	
	public List<Jugador> getquipo(Equipo equipo){
		SqlSession session = DBManager.openSession();

		try {

			EquipoDao EquipoMapper = session.getMapper(EquipoDao.class);
			List<Jugador> jugadores= EquipoMapper.getJugadoresPorEquipo(equipo);

			return jugadores;	
		}catch (Exception e) {
			SimpleLogger.error("Error consultando getJugadoresPorEquipo", e);
			
			return null;
			
		} finally {
			session.close();
		}
		
		
	} 
	
	public boolean inactivarEquipo(SqlSession session, Equipo  equipo){
		try{
			EquipoDao EquipoDao = session.getMapper(EquipoDao.class);
			
			//Se crea el Equipo
			EquipoDao.inactivarEquipo(equipo);
			
			return true;
		
		}catch (Exception e) {
			SimpleLogger.error("Error finalizarPartidoTransaccional", e);
			return false;
		}
		
		
	}
	
	
	public List<Equipo> tablaPosicionesGeneral(){
		SqlSession session = DBManager.openSession();

		try {

			EquipoDao EquipoMapper = session.getMapper(EquipoDao.class);
			List<Equipo> tablaPosiciones= EquipoMapper.tablaPosicionesGeneral();

			return tablaPosiciones;	
		}catch (Exception e) {
			SimpleLogger.error("Error consultando getJugadoresPorEquipo", e);
			
			return null;
			
		} finally {
			session.close();
		}
		
	}
	
	public List<EquipoResultado> getResultadoFinalEquipos(){
		
		SqlSession session = DBManager.openSession();

		try {

			EquipoDao EquipoMapper = session.getMapper(EquipoDao.class);
			List<EquipoResultado> resultado= EquipoMapper.getResultadoFinalEquipos();

			return resultado;	
		}catch (Exception e) {
			SimpleLogger.error("Error consultando getResultadoFinalEquipos", e);
			
			return null;
			
		} finally {
			session.close();
		}
		
		
	}
}
	